package com.dingding.common.core.base.daox;

import java.util.List;

public interface ISQLBaseDao {

	/**
	 * 
	 * @Description:执行SQL并把结果转化成自定义的bean
	 * @param sql 执行的sql语句
	 * @param beanClass 接受结果bean的class
	 * @param params 查询参数
	 * @param T 查询到的数据bean
	 * @author CHEHUANBO
	 * @since 2.4.0
	 * 
	 */
	public <T> T sqlToCustomBeanUnique(Class<T> beanClass, String sql, Object... params);

	/**
	 * 
	 * @Description:执行SQL并把结果转化成自定义的bean
	 * @param sql 执行的sql语句
	 * @param beanClass 接受结果bean的class
	 * @param params 查询参数
	 * @param List<T> 查询到的数据集合
	 * @author CHEHUANBO
	 * @since 2.4.0
	 * 
	 */
	public <T> List<T> listSqlToCustomBean(Class<T> beanClass, String sql, Object... params);

	/**
	 * 
	 * @Description:执行SQL并把结果转化成自定义的bean
	 * @param sql 执行的sql语句
	 * @param currentPage 当前页
	 * @param pageSize 每页显示数量
	 * @param beanClass 接受结果bean的class
	 * @param params 查询参数
	 * @param List<T> 查询到的数据集合
	 * @author CHEHUANBO
	 * @since 2.4.0
	 * 
	 */
	public <T> List<T> listSqlToCustomBean(Class<T> beanClass, String sql, int currentPage, int pageSize,
			Object... params);
	
	/**
	 * 
	 * @Description:执行SQL并把结果转化成自定义的bean
	 * @param sql 执行的sql语句
	 * @param currentPage 当前页
	 * @param pageSize 每页显示数量
	 * @param beanClass 接受结果bean的class
	 * @param params 查询参数
	 * @param List<T> 查询到的数据集合
	 * @author CHEHUANBO
	 * @since 2.4.0
	 * 
	 */
	public <T> List<T> listSqlToCustomBeanByPage(Class<T> beanClass, String sql, int currentPage, int pageSize,
			Object... params);
	
	
	
	/**
	 * 
	 * @Description: 执行自定义SQL修改数据
	 * @param sql
	 *            sql 执行的sql语句
	 * @param parm
	 *            参数
	 * @return boolean true 成功 false 失败
	 * @author CHEHUANBO
	 * @version V2.6.2
	 * 
	 */
	public boolean updateSqLRow(String sql, Object... parm);

}
